package com.lord.otter.component.infrastructure.template.repository;

import com.google.common.collect.Lists;

import java.util.List;

/**
 * 写操作仓储
 *
 * @author lord
 * 2025/8/19 17:18
 */
public interface RepositoryCmdTemplate<T> {

    default void add(T domain) {
        executeAdd(Lists.newArrayList(domain));
    }

    default void add(List<T> domains) {
        executeAdd(domains);
    }

    /**
     * 添加
     *
     * @param domains 参数
     * @author lord
     * 2025/8/19 17:18
     */
    void executeAdd(List<T> domains);

    default void modify(T domain) {
        executeModify(Lists.newArrayList(domain));
    }

    default void modify(List<T> domains) {
        executeModify(domains);
    }

    /**
     * 修改
     *
     * @param domains 参数
     * @author lord
     * 2025/8/19 17:19
     */
    void executeModify(List<T> domains);

    default void remove(List<T> domains) {
        executeRemove(domains);
    }

    /**
     * 删除
     *
     * @param domains 参数
     * @author lord
     * 2025/8/19 17:19
     */
    void executeRemove(List<T> domains);

}
